home *** CD-ROM | disk | FTP | other *** search
- % Convert AmigaGuide database to ASCII Text with ANSI Control Sequences
- % (c) 1994 Martin Mares, MJSoft System Software
-
- begin: '@' clr gatcmd % Waiting for @node
- '\n' begin
- else midx
- midx: '\n' begin
- else midx
- gatcmd: ' ' maycmd
- '\n' begin
- else add gatcmd
- maycmd: switch "NODE" gotnode
- else midx
-
- gotnode: '"' nodehd % Print node name
- '\n' begin
- else gotnode
- nodehd: '"' nodeig
- '\n' begin
- nodeig: '\n' copy nodei % Ignore rest of line
- else nodeig
-
- nodei: '@' clr gatnc % Inside the node
- '\n' copy nodei
- else copy nodej
-
- nodej: '@' mayz
- '\\' backs
- '\n' copy nodei
-
- gatnc2: '\n' gatnev % Command found
- ' ' gatnes
- else add
- gatnes: '\n' gatnev
- else
- gatnev: switch "ENDNODE" begin
- else nodei
- gatnc: use gatnc2 '{' clr ctrl
-
- mayz: '{' clr ctrl
- else put '@' copy nodej
-
- backs: '\\' '@' copy nodej % Backslash found
- '\n' put '\\' copy nodei
- else put '\\' copy nodej
-
- ctrl2: '}' back cend % Control characters
- ' ' spac
- else add
- ctrl: use ctrl2 '"' ref
- spac: ' '
- else back cend
- cend: switch
- "b" bold ; "ub" unbold
- "i" italic ; "ui" unital
- "u" underl ; "uu" unund
- "bg" backg ; "fg" foreg
- else cign
- cign: '}' nodej % Ignore rest of ctrl sequence
- else cign
-
- bold: put "\e[1m" cign % ANSI sequences
- unbold: put "\e[22m" cign
- italic: put "\e[3m" cign
- unital: put "\e[23m" cign
- underl: put "\e[4m" cign
- unund: put "\e[24m" cign
- backg: put "\e[4" clr ccolor
- foreg: put "\e[3" clr ccolor
-
- ccolor: ' ' ccole % Color switches
- '}' back ccole
- else add
- ccole: switch
- "text" cc1
- "shine" cc2
- "shadow" cc1
- "fill" cc3
- "filltext" cc1
- "back" cc0
- "highlight" cc2
- else cign
- cc0: put "0m" cign
- cc1: put "1m" cign
- cc2: put "2m" cign
- cc3: put "3m" cign
-
- ref: put "\e[7m" refloop % Link - displayed in inverse video
- refloop: '"' put "\e[27m" cign
-